配置文件


每个应用包中都包括一个名为package.json的配置文件 , 文件内容格式为JSON . 该文档将详细说明配置文件中的属性 .

快速开始

以下内容为最简单的配置文件内容:

{
  "main": "index.html",
  "name": "nw-demo",
}

配置文件中只需要两个配置字段就可以开始NW.js应用 . 两个属性说明信息如下:

  • main: NW.js开始运行打开的index.html文件
  • name: 应用名称为nw-demo

必要字段

每个应用配置文件中必须要提供以下属性说明应用描述信息 .

main

  • {String} NW.js开始时需要加载的HTML页面或者JavaScript脚本 .

该字段可以指定URL , 也可以指定文件名称 , 比如:index.html或者script.js , 或者指定路径 , 该路径相对package.json所在目录 .

name

  • {String} 应用名称 . 名称由数字 , 小写字母 , "." , "_"或者"-"组成 , 如果包含其他内容将无效.

name字段内容全局唯一 , NW.js应用的数据将存储在该字段定义的名称目录中 .

特性控制字段

以下字段控制NW.js提供的特性以及如何打开主装口 .

nodejs

  • {Boolean} 是否支持Node , false值为不支持 .

node-main

  • {String} 指定node.js脚本文件路径 . 窗口加载DOM之前启动Node环境时执行 .

domain

  • {String} 指定chrome-extension://协议URL , 供应用中使用的主机地址 . 网页引擎将共享相同cookies给相同域名中的应用和网站 .

single-instance

0.13版本之后该属性将弃用 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
  • {Boolean} 应用单例方式运行 . 默认值为true .

NW.js默认运行一个应用运行 . 如果需要应用同时多例运行 , 该属性设置为false .

bg-script

  • {String} 后台脚本 . 应用开始运行时执行后台脚本 .

window

webkit

user-agent

  • {String} 重写应用请求页面中的User-Agent信息 .

以下变量内容可以动态设置User-Agent内容:

  • %name: 替换配置文件中的name字段 .
  • %ver: 替换配置文件中的version字段 .
  • %nwver: 替换NW.js版本 .
  • %webkit_ver: 替换WebKit引擎版本 .
  • %osinfo: 替换系统以及CUP信息 .

node-remote

0.13版本开始该属性发生变化 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
  • {Array} or {String} 远程页面启用Node . 控制启用站点使用该特性 . 数组中各项匹配模式在Chrome扩展中使用 .

A match pattern is essentially a URL that begins with a permitted scheme (http, https, file, or ftp, and that can contain '*' characters. The special pattern <all_urls> matches any URL that starts with a permitted scheme. Each match pattern has 3 parts:

匹配模式本质上为URL , 由http, https, file , ftp或者'*'开始 . 其中'*'代表匹配所有URL . 每个匹配模式由三部分组成:

  • scheme — 例如, httpfile*
  • host — 例如, www.google.com*.google.com*; 如果模式为文件类型将不包含该部分 .
  • path — 例如, /*, /foo*, 或/foo/bar. 路径必须为根目录权限 .

基础语法:

<url-pattern> := <scheme>://<host><path>
<scheme> := '*' | 'http' | 'https' | 'file' | 'ftp'
<host> := '*' | '*.' <除了'/'和'*'的任意字符>+
<path> := '/' <任意字符>

chromium-args

  • {String} 指定chromium命令行参数 .

如果需要自定义chromium参数描述应用可以使用该参数 . 例如 , 禁止GPU加速视频显示 , 可以添加"--disable-accelerated-video"参数到chromium-args" . 如果需要添加多个参数 , 两个参数之间用空格分开 . 该参数需要使用引号括起进行标记 .

参考命令行参数获取更多详细信息 .

js-flags

  • {String} 指定JS引擎(V8)可以使用的特性 . 例如打开协调代理(Harmony Proxies)以及集合(Collections):
{
  "name": "nw-demo",
  "main": "index.html",
  "js-flags": "--harmony_proxies --harmony_collections"
}

inject_js_start

inject_js_end

  • {String} 本地文件名 , 相对于应用路径 , 指定窗口使用JavaScript文件路径 .

inject_js_start: CSS文件执行之后 , 其他DOM或脚本运行之前 , 注入JavaScript代码 .

inject_js_end: 页面document对象加载之后 , onload时间触发之前 , 注入JavaScript代码 . 主要作为新窗口中Window.open()的参数注入JavaScript代码 .

additional_trust_anchors

  • {Array} 数组由多个PEM编码的证书组成 , 例如"-----BEGIN CERTIFICATE-----\n...certificate data...\n-----END CERTIFICATE-----\n" .

证书作为附加可用的根证书使用 , 允许连接自签名证书或者CA签发机构颁发证书的服务 .

dom_storage_quota

  • {Integer} DOM存数限制数量 , 单位为mega bytes (MB) . 建议设置为期望值的两倍 .

no-edit-menu (Mac)

!!! warning "Deprecated" This property is deprecated since 0.13.0. See Migration Notes from 0.12 to 0.13.

0.13版本之后该属性将弃用 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
  • {Boolean} Mac OS X系统中不显示编辑菜单 . 默认值为false . 该属性只能在Mac OS X系统中使用 .

Window子字段

窗口子字段默认情况被继承到使用window.open()<a target="_blank">打开的子窗口 . 以下子字段不会被继承 , 新打开的窗口将使用默认值:

  • fullscreen -> false
  • kiosk -> false
  • position -> null
  • resizable -> true
  • show -> true

所有窗口子字段可以使用new-win-policy事件重写 .

id

  • {String} 窗口身份值 . 该值用来记住窗口的尺寸以及位置 , 当窗口被打开时完成恢复 . 参考Chrome应用文档

title

  • {String} NW.js创建的窗口标题 . 应用开始显示标题信息 .

width

height

  • {Integer} 主窗口初始宽度和高度 .

toolbar

0.13版本开始该属性发生变化 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
  • {Boolean} 导航栏中是否显示工具条 .

icon

  • {String} 窗口图标路径 .

position

  • {String} 控制窗口放置位置 , 可以设置三个值分别为null , center , mouse .

min_width

min_height

  • {Integer} 窗体最小宽度和高度 .

max_width

max_height

  • {Integer} 窗体最大宽度和高度 .

as_desktop (Linux)

  • {Boolean} X11环境下 , 作为桌面背景显示 , 只适用Linux系统 .

resizable

  • {Boolean} 窗体大小可调整 .

注意 , Mac OS X系统中该属性设置为false , 框架中设置为true , 窗口仍然可以全屏 . 全屏控制需要设置fullscreen .

always_on_top

0.13版本开始该属性发生变化 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
  • {Boolean} 窗口总是在其他窗口之上 .

visible_on_all_workspaces (Mac & Linux)

0.13版本开始该属性发生变化 . 参考[版本0.12到0.13迁移](../For Users/Migration/From 0.12 to 0.13.md) .
  • {Boolean} 窗口同时在所有的工作区中可见 . 该功能只适用在有多工作区的系统中 , 目前只有Mac OS X以及Linux系统 .

fullscreen

  • {Boolean} 窗口全屏 .

注意 , 即使框架将全屏设置为false , 窗体将阻止鼠标获取屏幕边缘 . 如果全屏应该避免设置为false .

show_in_taskbar

  • {Boolean} 窗口可以显示到任务栏或者dock中 , 默认为true .

frame

  • {Boolean} 设置为false标记窗口为无框架 .

注意 , 全屏中如果设置为无框架 , 窗体将阻止鼠标获取屏幕边缘 . 如果为全屏状态避免设置为true .

show

  • {Boolean} 值为false , 应用启动之后将被隐藏 .

kiosk

  • {Boolean} 启用Kiosk模式 . 该模式中窗口全屏并且阻止应用离开 , 这样应用需要提供离开Kiosk模式方法 . 该模式主要使用在展示 .

transparent

  • {Boolean} 透明窗体模式 , 默认为false .

CSS中控制rgba背景之中的透明度 . 命令行参数--disable-transparency也可以显示该特性 .

透明窗体区域支持穿透点击 , 命令行参数中使用--disable-gpu .

WebKit子字段

double_tap_to_zoom_enabled

  • {Boolean} 启用两指缩放功能 , 默认为false .

plugin

  • {Boolean} 加载浏览器扩展插件 , 比如Flash , 默认为true .

其他字段

Packages/1.0标准说明其他package.json中提供的字段 .